![]() |
![]() |
|
rtk 20022002.1.1 (dopolni)1. podnalogaNaročniki večjih količin tovora se običajno odločajo za prevoz tovora z ladjo.
Ko zabojniki prispejo v luko, jih morajo tam uskladiščiti, vse dokler ponje
ne pride naročnik ali pa jih morajo natovoriti na vlak. V neki luki zabojnike
nalagajo enega ob drugega in ko zapolnijo celo vrsto, se lotijo nalaganja v
drugo vrsto, nato tretjo in tako dalje. Ko se zapolni cela površina, začnejo
zabojnike nalagati še na naslednjo višino v enakem zaporedju kot prej (torej
prvi zabojnik na drugi višini pride položen na prvi zabojnik v prvi višini
itd.). Podano imamo število zabojnikov v vsaki vrsti NalogaDopolni program
Primer postavitve zabojev v plasteh za
Zabojnik s številko 16 na gornji sliki je četrti zabojnik v prvi vrsti druge plasti. Vhodni podatkiŠtevila Izhodni podatkiPoložaj zabojnika (plast, vrsta, stolpec) v obliki niza. PrimerVhod
Izhod
Uradna rešitevdef zabojnik(n,m,l,z): plast = 1 + (z - 1) / (n * m) vrsta = 1 + ((z - 1) % (n * m)) / n stolpec = 1 + ((z - 1) % (n * m)) % n izpis = 'Plast: ' + str(int(plast)) + ', ' izpis += 'Vrsta: ' + str(int(vrsta)) + ', ' izpis += 'Stolpec: ' + str(int(stolpec)) return izpis 2002.1.2 (dopolni)1. podnalogaLiliput je majhno mesto z veliko avtobusnimi postajami. Vse proge mestnih
avtobusov so krožne. Vsaka postaja pa pripada natančno eni progi, torej nobena
dva avtobusa nikoli ne obiščeta iste avtobusne postaje. Težava je v tem, da
Liliputanci objavljajo vozne rede svojih avtobusov na prav poseben način.
Avtobusne postaje so oštevilčene s števili od Za primer vzemimo zaporedje števil Prvo število v zaporedju je NalogaTvoja naloga je dopolniti program
Vhodni podatkiZaporedje števil, podano v seznamu. Omejitve vhodnih podatkov
Izhodni podatkiSeznam z vsemi avtobusnimi programi predstavljenimi kot seznam postaj. Zadnji element seznama pa je dolžina najdaljše proge. PrimerVhod
Izhod
Uradna rešitevdef avtobus(vozni_red): N = len(vozni_red) obiskane_postaje = [False for i in range(N)] najdaljsa_proga = 0 proge = [] for j in range(N): if not obiskane_postaje[j]: obiskane_postaje[j] = True proga = [j+1] k = vozni_red[j] while k != j+1: proga.append(k) obiskane_postaje[k-1] = True k = vozni_red[k-1] proge.append(proga) if len(proga) > najdaljsa_proga: najdaljsa_proga = len(proga) proge.append(najdaljsa_proga) return proge 2002.1.3 (dopolni)1. podnalogaPri uporabi bančne kartice moramo dokazati, da poznamo kodo pin (osebno identifikacijsko številko). Podobno v deželi PinLand uporabljajo štirimestne črkovne kode pin tudi za dostop do pomembnih podatkov na mreži. Pri razbijanju kode pin si pomagajmo s poskušanjem: vemo, kakšne so dovoljene kode, in preizkusimo vse možnosti. Za testiranje je na voljo funkcija Za kodo pin veljata naslednji omejitvi:
NalogaDopolni program
Vhodni podatkiFunkcija nima vhodnega podatka. Izhodni podatkiNiz štirih znakov, ki predstavljajo pravo pin kodo. Uradna rešitevdef test(poskus): '''Funkcija vrne True, če je pin pravilen in False sicer.''' st = [66,90,88,65,78,30] stevec = 0 for i in poskus[::-1]: a = ord(i) if a == st[stevec]: stevec += 1 else: return False return True def pin(): '''Funkcija s pomočjo funkcije test in poskušanjem najde pravo pin in jo izpiše.''' mozni_znaki = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' poskus = [0,0,0,0] for a in mozni_znaki: poskus[0] = a for b in mozni_znaki: poskus[1] = b for c in mozni_znaki: poskus[2] = c for d in mozni_znaki: poskus[3] = d poskus_str = ''.join(poskus) if test(poskus_str): return poskus_str 2002.1.4 (dopolni)1. podnalogaJanez se odpravlja na pot z avtomobilom iz Ljubljane v Bruselj. Na poti bo moral večkrat doliti gorivo. Ker je cena goriva na bencinskih črpalkah različna, ga zanima, kako naj v Bruselj pride kar najceneje. Na voljo ima naslednje podatke:
Janez pot začne s prazno posodo, prva črpalka pa je že takoj na začetku poti. Cilj potovanja predstavimo kot črpalko, kjer lahko Janez gorivo dobi zastonj. NalogaDopolni program
Vhodni podatkiDolžina poti Velikost posode za gorivo Poraba goriva Seznam seznamov, ki predstavljajo bencinske črpalke: [stevilka, oddaljenost, cena]. Izhodni podatkiSeznam seznamov, ki povedo, koliko goriva mora Janez natočiti na kateri črpalki ter ceno iztočenega goriva: [stevilka, kolicina goriva, znesek za placilo] PrimerVhod
Izhod
Uradna rešitevdef natoci_gorivo(pot, posoda, poraba, crpalke): '''Funkcija izračuna koliko goriva moramo dotočiti na kateri črpalki, da bo strošek goriva na naši poti najmanjši.''' # definiramo dve funkciji zgolj na račun bolj pregledne kode def oddaljenost(n): '''vrne oddaljenost n-te črpalke''' return crpalke[n-1][1] def cena(n): '''vrne ceno goriva na n-ti črpalki''' return crpalke[n-1][2] gorivo = 0 st_crpalk = len(crpalke) tocenje_goriva = [] i = 1 while i < st_crpalk: j = i + 1 #poiščemo naslednjo najcenejšo črpalko while j < st_crpalk: if cena(j) < cena(i): break else: j += 1 # koliko goriva potrebujemo do naslednje cenejše črpalke if j > st_crpalk: razdalja = pot - oddaljenost(i) else: razdalja = oddaljenost(j) - oddaljenost(i) potrebna_kolicina_goriva = round((razdalja / 100) * poraba, 2) if gorivo < potrebna_kolicina_goriva: # moramo dotočiti if potrebna_kolicina_goriva <= posoda: # dotočimo dovolj za pot do j-te črpalke dotocimo = round(potrebna_kolicina_goriva - gorivo,2) znesek = round(dotocimo * cena(i), 2) tocenje_goriva.append([i, dotocimo, znesek]) gorivo = 0 i = j else: # natocimo poln tank, a ne bo dovolj do j-te črpalke dotocimo = round(posoda - gorivo, 2) znesek = round(dotocimo * cena(i), 2) tocenje_goriva.append([i, dotocimo, znesek]) gorivo = posoda - round(((oddaljenost(i+1) - oddaljenost(i)) / 100) * poraba, 2) i += 1 else: # imamo dovolj do j-te črpalke gorivo -= potrebna_kolicina_goriva i = j return tocenje_gorivaMesto objave ob koncu projekta 15.9.2018 |